#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <stdlib.h>

int S[121][121];

/**
  找规律解法0ms
 * @brief split dynamatic programming
 * f(n,1)=f(1,n)=1
 * f(a,b)=f(b,b) b>a
 * f(a,a)=f(a,a-1)+1
 * f(a,b)=f(a,b-1)+f(a-b,b) a>b
 * @param s sum
 * @param n splits
 * @return
 */
int  split(int s, int n)
{
    if(S[s][n]!=0)
        return S[s][n];
    if(s<n){
        S[s][n]=split(s,s);
        return S[s][n];
    }
    if(s==n)
    {
        S[s][n]=split(s,n-1)+1;
        return S[s][n];
    }else
    {
        S[s][n]=split(s, n-1)+split(s-n,n);
        return S[s][n];
    }

}


/**
  母函数解法46ms
 * @brief set_coefs
 * @return
 */
inline void set_coefs(int *coefs, int max, int *next_coefs)
{
    int ts[121]={0};

    for(int i = 0; i <= max; i++)
    {
        for(int j = 0; j <= max-i; j++)
        {
            ts[i+j]+=next_coefs[i]*coefs[j];
        }
    }
    memcpy(coefs, ts, 4*max+4);
}
int get_nth_coef(int n)
{
    int coefs[121]={0};
    int coefs2[121]={0};
    for(int i = 0; i <= n; i++)
        coefs[i]=1;
    for(int i = 2; i <= n; i++)
    {
        memset(coefs2, 0, 4*n+4);
        for(int j = 0; i*j <= n; j++)
        {
            coefs2[j*i]=1;

        }
        set_coefs(coefs, n, coefs2);
    }
    return coefs[n];
}
int main()
{
    int n;
    memset(S, 0, 4*121*121);
    for(int i = 1; i <= 120; i++)
    {
        S[i][1]=1;
        S[1][i]=1;
    }
    while (std::cin>>n) {
        std::cout<<get_nth_coef(n)<<std::endl;
    }
    return 0;
}
